package com.cskaoyan.javase.file._1basic;

/**
 * @description: 前置知识点
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 1.什么是路径名?
 *     路径名是操作系统中,用于描述文件/文件夹存储位置的一个字符串
 *     路径名分为两种:
 *          1.绝对路径: 指的是可以唯一确定一个文件/文件夹的路径名表示
 *          2.相对路径: 指的是不能唯一确定一个文件/文件夹的路径名表示
 *     接下来按照操作系统分类,解释路径名:
 *          a.Windows
 *              Win操作系统,最大的特点是文件管理具有盘符的概念
 *              所以:
 *                  1.绝对路径: 只要带盘符,都是绝对路径,比如C:\1.txt
 *                  2.相对路径: 只要不带盘符,都是相对路径,比如1.txt
 *
 *          b.类Unix,包括原版Unix,Linux,MacOS
 *              类Unix操作系统的文件管理最大的特点是具有"根目录 /"的概念,所有文件都在根目录下
 *              所以:
 *                   1.绝对路径: 只要带根目录/,都是绝对路径,比如 : /usr/local/tomcat
 *                   2.相对路径: 只要不带根目录/,都是相对路径,比如 tomcat
 *
 *
 * 2.相对路径不能唯一确定某个文件,那么它怎么表示一个文件的路径呢?
 *      相对路径具有"相对于xxx"的概念,比如1.txt这个相对路径,只需要知道它相对于"C:\",那么仍然可以唯一确定一个文件
 *      所以相对路径只是隐藏了一部分路径表示,实际上它仍然是绝对路径
 *
 *      相对路径这么设计,目的是为了灵活且更简洁的路径表示
 *          比如E:\idea_space\35th\java35th\12-file\src\com\cskaoyan\javase\file\_1basic\Demo.java
 *          相对路径Demo.java相对于E:\idea_space\35th\java35th\12-file\src\com\cskaoyan\javase\file\_1basic
 *          更灵活:
 *              如果存在相对路径,就可以用".."去表示上一级目录,那么就无须在意"盘符,根目录"的影响
 *
 *  由于相对路径更灵活,实际开发中往往会有更多的用途,但是相对路径不如绝对路径安全,一旦外界环境改变,它很容易失效
 *
 * 3.相对路径具有相对于某个绝对路径的概念,那么在IDEA里写代码,它相对于谁呢?
 *      通过System.getProperty("user.dir"); 查看
 *      默认情况下,就是第一次创建的project的目录
 *      这个相对路径是可以被修改的,但是一般没有必要
 *
 * 4.开发在win上,代码运行时在linux服务器上,这是否意味着路径分隔符,要写不一样的呢?
 *      早期是需要这么做,但是现在Java已经很成熟了,可以自动根据操作系统环境不同做出变动
 *      不论用什么系统开发,以下分隔符都是可用的:
 *           a./
 *           b.//
 *           c.\\ (推荐)
 *           注意唯独单反斜杠"\" 不可以,单反斜杠表示转义字符
 *
 */
public class Demo {
    public static void main(String[] args) {
        System.out.println(System.getProperty("user.dir"));
        System.out.println("e:\\");
    }
}
